[c]运行程序时若输入。。。

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:07:13
32 25 20 23 35 52 87 22 48 30 0<回车>则下面程序的运行结果是
main()
{ int a[4]={0},x,i;
scanf("%d",&x);
while(x!=0)
{ if(x%5==0)a[1]+=2;
else if(x/10==2)a[2]+=x;
else a[3]+=1;
scanf("%d",&x);
}
for(i=1;i<=3;i++)
printf("%4d",a[i]);
}

答案是8 45 4
我不太清楚一个语句同时满足if()else if()两句话怎么办??
帮忙解释一下 谢谢~!!!

if()else if() 若同时满足,只进入第一个if

32 25 20 23 35 52 87 22 48 30 0输入后
32: 走else, a[3] = 1
25: 走if, a[1] = 2
20: 走if, a[1] = 4
23: 走else if, a[2] = 23
35: 走if, a[1] = 6
52: 走else, a[3] = 2
87: 走else, a[3] = 3
22: 走else if, a[2] = 45
48: 走else, a[3] = 4
30: 走if, a[1] = 8
0: 跳出循环,打印

所以答案为8,45,4

if(x%5==0)a[1]+=2;当X可以被5整除,a[1]就加上一个2,如果不能,则执行if(x/10==2)a[2]+=x;而这句话的意思是,如果X的十位为2,注意,此处的X已却定是不能被5整除的,所以25和20都不属于这一块,当满足上面两个条件,就把满足这种条件的数相加,并把值放入a[2],a[3]+=1;这条是当上面这些条件都不满足时,把这种数的数目放到a[3]中.
本题中,25 20 35 30符合第一种条件,所以a[1]=4*2=8
23 22符合第二种条件,所以a[2]=23+22=45
32 52 87 48为剩下的数,一共有4个,所以a[3]=4
遇到最后的0,循环结束